/**
 * 轮播图管理路由模块
 * 
 * 实现轮播图增删改查(CRUD)操作:
 * 1. GET /api/banners - 获取所有轮播图列表
 * 2. GET /api/banners/:id - 根据ID获取特定轮播图
 * 3. POST /api/banners - 创建新轮播图
 * 4. PATCH /api/banners/:id - 更新轮播图信息
 * 5. DELETE /api/banners/:id - 删除轮播图
 */

//引入express模块
const express = require("express");

//创建路由对象
const router = express.Router();

//引入轮播图控制器
const bannerController = require("../controllers/banner.controller");

// 引入公共的异步错误处理工具函数
const asyncHandler = require("../utils/asyncHandler");

/*
  @route GET /api/banners/
  @desc 返回所有轮播图列表
  @access Public
  测试用例：
  //用例1：获取所有轮播图列表
  curl -X GET http://localhost:3303/api/banners
  //用例2：获取显示的轮播图列表
  curl -X GET http://localhost:3303/api/banners?show=true
  //用例3：获取隐藏的轮播图列表
  curl -X GET http://localhost:3303/api/banners?show=false
*/
router.get("/", asyncHandler(bannerController.getAllBanners));


/**
 * @route   GET /api/banners/:id
 * @desc    根据ID获取特定轮播图
 * @access  Public
 * 测试用例：
 * //用例1：获取存在的轮播图
 * curl -X GET http://localhost:3303/api/banners/1
 * //用例2：获取不存在的轮播图
 * curl -X GET http://localhost:3303/api/banners/9999
 */
router.get("/:id", asyncHandler(bannerController.getBannerById));



/**
 * @route   POST /api/banners
 * @desc    创建轮播图
 * @access  Public
 * 测试用例：
  //用例1：创建新轮播图
  curl -X POST http://localhost:3303/api/banners -H "Content-Type: application/json" -d "{\"imgUrl\": \"https://example.com/banner1.jpg\", \"title\": \"测试轮播图\", \"targetUrl\": \"https://example.com\", \"sortOrder\": 10, \"show\": true}"
  //用例2：创建轮播图，缺少必填字段 imgUrl
  curl -X POST http://localhost:3303/api/banners -H "Content-Type: application/json" -d "{\"title\": \"测试轮播图\", \"targetUrl\": \"https://example.com\", \"sortOrder\": 10, \"show\": true}"
*/
router.post("/", asyncHandler(bannerController.createBanner));


/**
 * @route   PATCH /api/banners/:id
 * @desc    更新轮播图信息
 * @access  Public
 * 测试用例：
  //用例1：更新存在的轮播图
  curl -X PATCH http://localhost:3303/api/banners/1 -H "Content-Type: application/json" -d "{\"title\": \"更新后的标题\", \"show\": true}"
  //用例2：更新不存在的轮播图
  curl -X PATCH http://localhost:3303/api/banners/9999 -H "Content-Type: application/json" -d "{\"title\": \"更新后的标题\", \"show\": true}"
  //用例3：更新轮播图，参数错误
  curl -X PATCH http://localhost:3303/api/banners/1 -H "Content-Type: application/json" -d "{\"title\": \"\"}"
*/
router.patch("/:id", asyncHandler(bannerController.updateBanner))


/**
 * @route   DELETE /api/banners/:id
 * @desc    删除轮播图
 * @access  Public
 * 测试用例：
  //用例1：删除存在的轮播图
  curl -X DELETE http://localhost:3303/api/banners/1
  //用例2：删除不存在的轮播图
  curl -X DELETE http://localhost:3303/api/banners/9999
 */
router.delete("/:id", asyncHandler(bannerController.deleteBanner));

//导出路由对象，供app.js使用
module.exports = router;